package middleware

import "github.com/gin-gonic/gin"

// Secure 是一个中间件函数，用于添加安全和资源访问相关的响应头。
func Secure() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		// 设置允许跨域请求的源为所有
		ctx.Header("Access-Control-Allow-Origin", "*")
		// 设置 X-Frame-Options 头，防止网页被嵌入到 iframe 中
		ctx.Header("X-Frame-Options", "DENY")
		// 设置 X-Content-Type-Options 头，防止浏览器猜测 MIME 类型
		ctx.Header("X-Content-Type-Options", "nosniff")
		// 设置 X-XSS-Protection 头，启用 XSS 防护
		ctx.Header("X-XSS-Protection", "1; mode=block")

		// 如果请求使用了 TLS，则设置 Strict-Transport-Security 头，强制使用 HTTPS
		if ctx.Request.TLS != nil {
			ctx.Header("Strict-Transport-Security", "max-age=31536000")
		}
	}
}
